package com.cqie.service;

import com.cqie.dto.entrepot.EntrepotDrugInfoListDto;
import com.cqie.dto.medical.AddMedicalDrugInfoDto;
import com.cqie.dto.medical.UpdateMedicalDrugInfoDto;
import com.cqie.entity.MedicalDrugInfo;
import com.baomidou.mybatisplus.extension.service.IService;
import com.cqie.exception.SpecialException;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;

import java.util.List;

/**
 * <p>
 * 服务类
 * </p>
 *
 * @author 不吃海鲜
 * @since 2024-12-04
 */
public interface IMedicalDrugInfoService extends IService<MedicalDrugInfo> {
    /**
     * 新增  药品信息
     *
     * @param addMedicalDrugInfoDto
     * @return
     */
    Boolean saveMedicalDrugInfo(AddMedicalDrugInfoDto addMedicalDrugInfoDto) throws SpecialException;


    /**
     * 查看药品信息List
     *
     * @param likeQuery 模糊查询
     * @param pageSize  每页显示条数
     * @param pageIndex 当前页数
     * @return
     */
    List<MedicalDrugInfo> getMedicalDrugInfoList(String likeQuery,String drugType, Integer pageSize, Integer pageIndex);

    /**
     * 删除药品信息
     *
     * @param drugId
     * @return
     */
    Boolean deleteMedicalDrugInfo(Integer drugId);

    /**
     * 根据药品编号模糊查询
     *
     * @param drugCode 药品编号
     * @return
     */
    List<AddMedicalDrugInfoDto> getMedicalDrugInfoByDrugCode(String drugCode);

    /**
     * 根据药品ID集合查询药品信息
     *
     * @param drugIdList
     * @return
     */
    List<EntrepotDrugInfoListDto> getMedicalDrugInfoByDrugIdList(List<Integer> drugIdList,
                                                                 Integer pageSize,
                                                                 Integer pageIndex);

    /**
     * 根据id 获取药品信息
     * @param drugId
     * @return
     */
    AddMedicalDrugInfoDto getMedicalDrugInfoByDrugId(Integer drugId) throws SpecialException;

    /**
     * 更新药品图片
     * @param drugInfo
     * @return
     */
    Boolean updateDrugPhoto(MedicalDrugInfo drugInfo) throws SpecialException;

    /**
     * 更新药品
     * @param updateMedicalDrugInfoDto
     * @return
     */
    Boolean updateMedicalDrugInfo(UpdateMedicalDrugInfoDto updateMedicalDrugInfoDto);


}
